/***********************
 文件名：main.c
 描述：物联网设备巡检系统主文件
 创建时间：2024年9月20日09:36:25
 创建人：IOT_王旭
 ***********************/
#include <stdio.h>
#include <stdlib.h>
#include "IOT_PI_Menu.h"           // 包含项目相关的菜单界面头文件
#include "IOT_Engineer_Function.h" // 包含工程师功能相关头文件
#include "IOT_Admin_Function.h"    // 包含管理员功能相关头文件
#include "IOT_AdminFile.h"         // 包含管理员文件操作相关头文件
#include "IOT_AccPassword.h"       // 包含账户密码相关头文件

/************宏定义**************/
#define IOT_ADMIN 1
#define IOT_ENGINEER 2
#define IOT_EXIT 3

/**************************
函数名称：IOT_Engineer_Function
描述：根据工程师选择执行相应功能
参数：LinkList Head, EquipmentLink Arm
 返回值：无
****************************/
void main()
{
  int result = -1;                          // 定义
  LinkList Head;                            // 定义链表头节点，用于存储工程师信息
  EquipmentLink Arm;                        // 定义设备链表头节点，用于存储设备信息
  IOT_InitLinkList(&Head);                  // 初始化工程师信息链表
  IOT_EquipmentInitLink(&Arm);              // 初始化设备信息链表
  IOT_Engineer_FileRead(Head, "Engineer");  // 从文件中读取工程师信息到链表
  IOT_Equipment_FileRead(Arm, "Equipment"); // 从文件中读取设备信息到链表
  if (Head->next == NULL)                   // 如果工程师信息链表为空，则初始化管理员密码（可能是首次使用）
  {
    IOT_InitAdminPASSLink(Head);
  }
  IOT_Window(); // 显示初始界面或窗口
  while (1)
  {
    IOT_PI_FMenu();        // 显示主菜单
    result = IOT_GetVal(); // 获取用户输入的选择
    if (result == -1)
    {
      printf("输入错误\n");
    }
    switch (result)
    {
    case IOT_ADMIN:
    {
      IOT_AdminAccPassword_Function(Head, Arm); // 调用管理员账户密码功能（包含登录验证和后续管理操作）
      break;
    }
    case IOT_ENGINEER:
    {
      IOT_EngAccPassword_Function(Head, Arm); // 调用工程师账户密码功能（包含登录验证和后续操作）
      break;
    }

    case IOT_EXIT:
    {
      IOT_Exit(); // 退出循环
    }
    default:
      break;
    }

    system("pause"); // 按任意键继续
    system("cls");   // 清屏
  } // 循环结束点
}
